Skip to content

Make remote push the primary flow - #63

Merged
chruffins merged 10 commits into
mainfrom
hypeship/docker-like-push-ux
Aug 18, 2026
Merged

Make remote push the primary flow#63
chruffins merged 10 commits into
mainfrom
hypeship/docker-like-push-ux

Conversation

@chruffins

@chruffins chruffins commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

summary

big breaking change: hypeman push TARGET no longer does local pushes. those are now done with hypeman push local TARGET

  • make hypeman push TARGET the Docker-like remote-push flow
  • stage a matching local Docker tag into Hypeman automatically before pushing
  • keep cached-image remote pushes with hypeman push IMAGE TARGET
  • keep local-only uploads explicit with hypeman push local IMAGE [TARGET]
  • preserve detached compatibility for push create

new push UX

Docker tag → remote registry

docker tag alpine:latest 123456789.dkr.ecr.us-east-1.amazonaws.com/myapp:v1
hypeman push 123456789.dkr.ecr.us-east-1.amazonaws.com/myapp:v1

The target must exist in the local Docker daemon. The CLI stages it into Hypeman, waits for image conversion, then queues the remote push. For an already-cached Hypeman image, use the two-argument form below.

cached Hypeman image → remote registry

hypeman push alpine:latest 123456789.dkr.ecr.us-east-1.amazonaws.com/myapp:v1

The command validates references, requires an explicit target tag, waits for completion, and reports status plus the final digest.

local Docker → Hypeman only

hypeman push local nginx:latest
hypeman push local nginx:latest myapp/nginx:v1

detached pushes

hypeman push --detach TARGET

Returns the push ID immediately. Existing hypeman push create IMAGE TARGET and hypeman push remote IMAGE TARGET remain detached compatibility forms.

status and inspection

hypeman push ls
hypeman push inspect PUSH_ID

Interactive terminals show a single updating status line. CI and piped output use plain newline status.

credentials

echo "$REGISTRY_PASSWORD" | hypeman push TARGET \
  --username USERNAME --password-stdin

The server Docker keychain remains the default when credentials are omitted.

structured output

hypeman push --format json TARGET

Direct pushes return the final result in structured formats. Add --detach to return the queued result instead.

tests

  • GOCACHE=/tmp/hypeman-go-build go test ./...

Note

Medium Risk
Breaking CLI contract will break existing scripts that relied on hypeman push for local-only uploads; changes are confined to the CLI and reuse existing image-wait/push APIs.

Overview
Breaking change: the default hypeman push behavior is now remote registry push, not uploading a local image into Hypeman only. Local daemon → Hypeman uploads move to hypeman push local.

The top-level command is reshaped into Docker-style flows: hypeman push TARGET loads that tag from the local Docker daemon, stages it into Hypeman (with upload progress and digest output), waits for the image record and ready state, then runs a remote push to the same reference. hypeman push IMAGE TARGET pushes an image already in Hypeman and blocks until the job finishes, with live status (in-place line on TTYs, newline logs in CI). --detach (and legacy push create / remote) queue the job and print the push ID.

Remote pushes gain shared flags (--password-stdin, registry creds, --insecure), stricter target validation (explicit tag), and push ls / push inspect aliases. Local uploads pick up Docker-like stderr messaging, HTTP/HTTPS base URL checks, and byte progress during remote.Write.

Reviewed by Cursor Bugbot for commit a8a0263. Bugbot is set up for automated code reviews on this repo. Configure here.

follow-up

  • Add server-side Hypeman image tagging, including hypeman image tag SOURCE TARGET and the corresponding API support. This is intentionally deferred so this PR remains CLI-only; the current flow stages local Docker tags as a bridge.

@chruffins chruffins changed the title Improve Docker-like push UX Make remote push the primary flow Aug 14, 2026
@chruffins
chruffins marked this pull request as ready for review August 14, 2026 15:12

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 3 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 0a20e7e. Configure here.

Comment thread pkg/cmd/pushcmd.go Outdated
Comment thread pkg/cmd/push.go
Comment thread pkg/cmd/pushcmd.go
@chruffins
chruffins requested a review from sjmiller609 August 17, 2026 18:54
@sjmiller609
sjmiller609 removed their request for review August 17, 2026 19:52
@sjmiller609

Copy link
Copy Markdown
Contributor

we discussed potential simplification to match docker syntax, re-request when desired!

@chruffins
chruffins requested a review from sjmiller609 August 18, 2026 14:30

@sjmiller609 sjmiller609 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

heck yeah!

@chruffins
chruffins merged commit e8aedc0 into main Aug 18, 2026
7 checks passed
@chruffins
chruffins deleted the hypeship/docker-like-push-ux branch August 18, 2026 18:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants